package com.sloth.bear.service;

import com.sloth.bear.dto.request.DocListRequest;
import com.sloth.bear.dto.request.DocumentRequest;
import com.sloth.bear.dto.request.DocumentMoveRequest;
import com.sloth.bear.dto.request.DocumentSortUpdateRequest;
import com.sloth.bear.dto.vo.DocumentDetailsVo;
import com.sloth.bear.dto.vo.DocumentListVo;

import java.util.List;

/**
 * 文档服务接口
 */
public interface DocService {
    
    /**
     * 获取所有文档（树形结构）
     */
    List<DocumentListVo> listDoc(DocListRequest request);
    
    /**
     * 根据ID获取文档详情
     */
    DocumentDetailsVo getDocumentById(Long id);
    
    /**
     * 创建文档
     */
    DocumentListVo createDocument(DocumentRequest request);
    
    /**
     * 更新文档
     */
    DocumentListVo updateDocument(Long id, DocumentRequest request);
    
    /**
     * 删除文档
     */
    boolean deleteDocument(Long id);
    
    /**
     * 移动文档到新的父文档下
     */
    boolean moveDocument(Long documentId, DocumentMoveRequest request);
    
    /**
     * 批量更新文档排序
     */
    boolean batchUpdateSort(DocumentSortUpdateRequest request);
    
    /**
     * 验证文档移动是否会造成循环引用
     */
    boolean validateMove(Long sourceId, Long targetId);
}